home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / dir2text.arc / DIR2TEXT.C next >
Encoding:
Text File  |  1985-08-11  |  3.0 KB  |  100 lines

  1. #include <stdio.h>
  2.  
  3.  
  4. struct {
  5.    char for_dos[21];
  6.    char attr;
  7.    struct {
  8.       unsigned hour     : 5;
  9.       unsigned minute   : 6;
  10.       unsigned secs     : 5;
  11.    } time;
  12.    struct {
  13.       unsigned year     : 7;
  14.       unsigned month    : 4;
  15.       unsigned day      : 5;
  16.    } date;
  17.    long size;
  18.    char name[13];
  19.    char fill[85];
  20. } buf;
  21.  
  22.  
  23. main()
  24. {
  25.    int error;
  26.    int attr;
  27.    char label[13];
  28.    char fname[9];
  29.    char fext[4];
  30.    char fnout[81];
  31.    char *ptr;
  32.    char ch;
  33.    char *strpbrk();
  34.    
  35.    FILE *fpout;
  36.    
  37.    printf("\n\nEnter output filename: ");
  38.    input(fnout,"",50,12,'_',0,0,0);
  39.    
  40.    if(exist(fnout))
  41.       printf("\n\nOutput file %s exists.  Directory info will be appended.\n\n",fnout);
  42.    else
  43.       printf("\n\nCreating %s.\n\n",fnout);
  44.  
  45.    fpout=fopen(fnout,"aa");
  46.    if(!fpout) {
  47.       printf("\n\nOutput file open error...\n\n");
  48.       exit(1);
  49.    }
  50.  
  51.    while(1) {
  52.       kbclear();
  53.       ch=waitkey(0,0,"\nEnter diskette to catalog in drive A:, press any key, ESC to quit...\n\n");
  54.       if(ch==27)
  55.          break;
  56.       error=findfirst("a:*.*",&buf,0x08);
  57.       if(error==2 || error==18) {
  58.          printf("\nDiskette in drive A: does not have a volume label.\n\n");
  59.          printf("A volume label must be added before processing this diskette.  Use a utility\n");
  60.          printf("such as CV to add the label...\n\n");
  61.          continue;
  62.       }
  63.       strcpy(label,buf.name);
  64.       printf("label: %s\n",label);
  65.       error=findfirst("a:*.*",&buf,0x07);
  66.       if(error==2 || error==18)
  67.          continue;
  68.       ptr=strpbrk(buf.name,".");
  69.       if(ptr) {
  70.          *ptr='\0';
  71.          strcpy(fext,ptr+1);
  72.       } else strcpy(fext,"");
  73.       strcpy(fname,buf.name);
  74.       fprintf(fpout,"\"%-8s\",\"%-3s\",\"%7ld\",\"%02u:%02u:%02u\",\"%02u/%02u/%04u\",\"%s\"\n",
  75.              fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
  76.              buf.date.month,buf.date.day,buf.date.year+1980,label);
  77.       printf("%-8s.%-3s  %7ld  %02u:%02u:%02u  %02u/%02u/%04u\n",
  78.              fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
  79.              buf.date.month,buf.date.day,buf.date.year+1980);
  80.       while(1) {
  81.          error=findnext("a:*.*",&buf,0x07);
  82.          if(error==2 || error==18)
  83.             break;
  84.          ptr=strpbrk(buf.name,".");
  85.          if(ptr) {
  86.             *ptr='\0';
  87.             strcpy(fext,ptr+1);
  88.          } else strcpy(fext,"");
  89.          strcpy(fname,buf.name);
  90.          fprintf(fpout,"\"%-8s\",\"%-3s\",\"%7ld\",\"%02u:%02u:%02u\",\"%02u/%02u/%04u\",\"%s\"\n",
  91.                 fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
  92.                 buf.date.month,buf.date.day,buf.date.year+1980,label);
  93.          printf("%-8s.%-3s  %7ld  %02u:%02u:%02u  %02u/%02u/%04u\n",
  94.                 fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
  95.                 buf.date.month,buf.date.day,buf.date.year+1980);
  96.       }  
  97.    }
  98.    fclose(fpout);
  99. }
  100.